package com.tbit.uqbike.client.dao.core;

import com.tbit.uqbike.client.pojo.Account;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 账户dao
 *
 * @author Leon
 * 2017年2月24日 下午4:02:36
 */
public interface AccountDao {
    /**
     * 添加
     *
     * @param account
     */
    void insert(Account account);

    /**
     * 根据类型和用户名查询
     *
     * @param params
     * @return
     */
    Account getByTypeAndName(Map<String, Object> params);

    /**
     * 根据用户id查询
     *
     * @param accountId
     * @return
     */
    Account getByAccountId(Integer accountId);

    /**
     * 根据父id查询
     *
     * @param parentId
     * @return
     */
    List<Account> getByParentId(Integer parentId);

    /**
     * 更新
     *
     * @param account
     */
    void update(Account account);

    /**
     * 获取区域代理品牌id
     */
    Account getByAdAccountId(Integer accountId);

    /**
     * 获取所有运营区域
     *
     * @return
     */
    List<Account> getAll();

    /**
     * 获取所有类型的id
     *
     * @param type
     * @return
     */
    List<Integer> getByType(Integer type);

    /**
     * 获取区域名称
     *
     * @param list
     * @return
     */
    List<String> getByAccountIds(List<Integer> list);

    /**
     * 根据区域id获取品牌id
     *
     * @param accountId
     * @return
     */
    Integer getBrandId(@Param("accountId") Integer accountId);


    /**
     * @description: 根据账户id(可能是品牌id，加盟商id，区域id) 查找包含的所有区域id
     * @author: mo.shanyong
     * @date: 2025/2/19 14:20
     * @param: accountIdList
     * @return: java.util.List<java.lang.String>
     */
    List<Integer> getAllAccountIdByIds(@Param("accountIdList") List<Integer> accountIdList);
}